#ifndef __WHIMSY_PROPERTY_NET_HPP__SHANHAOBO_19800429__
#define __WHIMSY_PROPERTY_NET_HPP__SHANHAOBO_19800429__

#include "./WhimsyPropertyNetBase.hpp"
#include "./WhimsyPropertyNetRecordMode.hpp"

namespace Whms
{
    namespace Property
    {
        namespace Net
        {
            template<class BaseT, ::Whms::Property::Net::RecordMode::Type = ::Whms::Property::Net::RecordMode::eRM_Automatic>
            struct Type : public ::Whms::Property::Net::RecordMode::Automatic::Type<BaseT>
            {
                typedef ::Whms::Property::Net::RecordMode::Automatic::Type<BaseT>   tSuper;
                typedef typename tSuper::tData                                      tData;

                Type(tData& inDataRef) : tSuper(inDataRef)
                {

                }
            };

            template<class BaseT>
            struct Type<BaseT, ::Whms::Property::Net::RecordMode::eRM_ManualMulti> :
                public ::Whms::Property::Net::RecordMode::ManualMulti::Type<BaseT>
            {
                typedef ::Whms::Property::Net::RecordMode::ManualMulti::Type<BaseT> tSuper;
                typedef typename tSuper::tData                                      tData;

                Type(tData& inDataRef) : tSuper(inDataRef)
                {

                }
            };

            template<class BaseT>
            struct Type<BaseT, ::Whms::Property::Net::RecordMode::eRM_ManualLast> :
                public ::Whms::Property::Net::RecordMode::ManualLast::Type<BaseT>
            {
                typedef ::Whms::Property::Net::RecordMode::ManualLast::Type<BaseT>  tSuper;
                typedef typename tSuper::tData                                      tData;

                Type(tData& inDataRef) : tSuper(inDataRef)
                {

                }
            };
        } /// end of namespace Net
    } /// end of namespace Property
} /// end of namespace Whms

#endif /*__WHIMSY_PROPERTY_NET_HPP__SHANHAOBO_19800429__*/
